/*
 * An implementation of the Congestion Manager (CM) for Linux.
 * This file contains the CM protocol between sender and receiver.
 */

#include <linux/config.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/in.h>
#include <net/ip.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <net/cm.h>
#include <net/cm_proto.h>

struct proto cm_prot = {
	(struct sock *)&cm_prot,	/* sklist_next */
	(struct sock *)&cm_prot,	/* sklist_prev */
	cm_close,		      	/* close */
	udp_connect,		    	/* connect */
	NULL,			   	/* accept */
	NULL,			   	/* retransmit */
	NULL,			   	/* write_wakeup */
	NULL,			   	/* read_wakeup */
	datagram_poll,		  	/* poll */
#ifdef CONFIG_IP_MROUTE
	ipmr_ioctl,		     	/* ioctl */
#else
	NULL,			   	/* ioctl */
#endif
	cm_init,		       	/* init */
	NULL,			   	/* destroy */
	NULL,			   	/* shutdown */
	cm_setsockopt,		 	/* setsockopt */
	cm_getsockopt,		 	/* getsockopt */
	cm_sendmsg,		    	/* sendmsg */
	cm_recvmsg,		    	/* recvmsg */
	cm_bind,		       	/* bind */
	cm_rcv_skb,		    	/* backlog_rcv */
	cm_v4_hash,		    	/* hash */
	cm_v4_unhash,		  	/* unhash */
	cm_v4_rehash,		  	/* rehash */
	NULL,			   	/* good_socknum */
	NULL,			   	/* verify_bind */
	128,			    	/* max_header */  /* XXX ? value */
	0,			      	/* retransmits */
	"CM",			  	/* name */
	0,			      	/* inuse */
	0			       	/* highestinuse */
};

